package com.project.sianet.data.ResteasyClient;

import org.apache.http.HttpVersion;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;
import org.jboss.resteasy.client.ProxyFactory;
import org.jboss.resteasy.client.core.executors.ApacheHttpClient4Executor;
import org.jboss.resteasy.plugins.providers.RegisterBuiltin;
import org.jboss.resteasy.spi.ResteasyProviderFactory;

import com.project.sianet.util.extenders.SianetApplication;
import com.project.sianet.data.Client.UsuarioClient;
import com.project.sianet.entidades.Usuario;

import android.content.Context;
import android.os.AsyncTask;

public class UsuarioResteasyClient implements UsuarioClient {

	private final Context context;
    private String lastRequestURI;
    private UsuarioClient client;
    private static Usuario _usuario;
	
	public UsuarioResteasyClient(Context context) {
        this.context = context;
        RegisterBuiltin.register(ResteasyProviderFactory.getInstance());
    }
	
	private UsuarioClient getUsuarioClient() {
		
		String requestURI = SianetApplication.getRequestURI(context);
        if (client == null || !requestURI.equals(lastRequestURI)) {
            BasicHttpParams params = new BasicHttpParams();
            HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
            HttpProtocolParams.setContentCharset(params, HTTP.DEFAULT_CONTENT_CHARSET);
            HttpProtocolParams.setUseExpectContinue(params, false);
            client = ProxyFactory.create(UsuarioClient.class, requestURI, new ApacheHttpClient4Executor(params));
            lastRequestURI = requestURI;
        }
        return client;
		
	}
	
	@Override
	public Usuario validaToken(String login, String password) {
		TareaWSObtenerUsuario getUsuario = new TareaWSObtenerUsuario();
		getUsuario.execute(login, password);
		return _usuario;
	}
	
	private class TareaWSObtenerUsuario extends AsyncTask<String,Integer,Boolean> {

		Usuario usuario = null;
		
		@Override
		protected Boolean doInBackground(String... params) {
			boolean resul = false;
			
			try {
				
				usuario = getUsuarioClient().validaToken(params[0], params[1]);
				resul = true;

			} catch (Exception e) {

				System.out.println("Error de conexion "+e);
			
			}
			
			return resul;
			
		}
		
		protected void onPostExecute(Boolean result){
			if (result){

				_usuario = usuario;

			}
		}
		
	}

	@Override
	public void UpdateRegID(String login, String regid, String accion) {
		// TODO Auto-generated method stub
		
	}

	
}
